1. Statement of the Technical Field
The present invention relates to pervasive device applications development and more particularly to configuring a shared library for deployment in a pervasive device.
2. Description of the Related Art
Computing has changed dramatically since the advent of the personal computer in the latter part of the twentieth century. Whilst the vast majority of end user applications operated within the single threaded, single tasking desktop computing environment, modern end user applications operate in a variety of disparate environments. In this regard, the modern computing environment can range from multi-threaded multi-tasking operating desktop computing system, to equivalently advanced pervasive computing devices, including handheld personal digital assistants, cellular telephones, paging devices and the like. To support the rapid growth of the pervasive device market, many applications developed for the desktop computing environment have been ported to the pervasive device computing environment.
Regardless of the computing environment, producing an end user application typically involves the generation of computing source code conforming to a specific computing language specification, followed by a compilation step. The compilation step can produce one or more binary objects suitable for linkage and assembly into an executable application. In this regard, tool chains are widely available in the marketplace which can manage the application generation process. Notably, in the course of developing an executable application, one or more shared libraries can be referenced and relied upon for incorporated logic, resources, or both so that the executable application itself needn't incorporate the referenced logic and resources. To that end, shared libraries can be produced in a similar fashion, though start up code need not be included in a shared library as it must in an executable module.
Shared libraries which have been generated for the pervasive device target platform typically are required to include position independent data and code segments. Position independent data and code segments generally refer to program code and corresponding data which can execute from different locations in memory and are usually associated with older computing environments which lack a memory management unit. In reference to shared libraries, the same library code and data can be mapped to a location in each referencing application using a virtual memory system where it will not overlap the application or other shared libraries.
Relocatable data and code segments, unlike position independent data and code segments, are data and code segments whose memory location can be determined at link time or at run time in reference to a base address. In the simplest model of relocation, the loader performs the final binding of code to specific memory locations, and as it does so, it adjusts or relocates all of the pointers from one part of the loaded program to another. Relocation involves adding a constant, the relocation base, to each address which refers to another location in the same program. The relocation base is usually the same as the address at which the first byte of the program is loaded.
Importantly, to enforce the requirement that shared libraries support position independent data and code segments, the compilation and linkage tools in the tool chains for pervasive device target platforms sometimes do not support relocations to either of the data or text segment. Yet, many well-known programming standards, including the ISO C standard, require compliant tool chains to support relocations in the data segment. As such, a multitude of existing applications developed for the desktop environment cannot easily be ported to the pervasive device environment.